package com.panopset.compat;

import java.util.ArrayList;
import java.util.List;

/**
 * Droid compatible logger.
 * 
 * @author Karl Dinwiddie
 * 
 */
public final class Log {

	private final List<LogListener> listeners = new ArrayList<LogListener>();

	public void addListener(LogListener logListener) {
		listeners.add(logListener);
	}

	/**
	 * Display a message to the user.
	 * 
	 * @param msg
	 *            Message to display.
	 */
	public void dspmsg(final String msg) {
		if (listeners.isEmpty()) {
			System.out.println(msg);
			return;
		}
		for (LogListener ll : listeners) {
			ll.append(msg);
			ll.append(Strings.getEol());
		}
	}

	/**
	 * 
	 * @param msg
	 *            Message to log.
	 */
	public void log(final String msg) {
		dspmsg(msg);
	}

	/**
	 * Log a stack trace.
	 * 
	 * @param t
	 *            Throwable to log.
	 */
	public void log(final Throwable t) {
		for (LogListener ll : listeners) {
			ll.append(new TraceDump(t).toString());
		}
		t.printStackTrace();
	}
}
